// 1.导入express
const express = require("express");

// 2.创建web服务器
const app = express();

// 8.jsonp请求 (只能get请求 客户端通过script 的src将回调函数一传参形式发送到服务器)
// !必须在cors中间件之前配置JSONP接口
app.get("/api/jsonp", (req, res) => {
  // 获取客户端发送过来的回到函数名字
  const funcName = req.query.callback;
  // 得到JSONP形式发送给客户端的数据
  const data = { name: "jsonp", age: 12 };
  // 拼接 函数调用的字符串和参数
  const scriptStr = `${funcName}(${JSON.stringify(data)})`;
  // 响应给客户端 <script> 进行解析
  res.send(scriptStr); // ==>   <script>f()</script>
});

// 6.挂载中间件 获取表单数据body传参
// !(路由之前)
app.use(express.urlencoded({ extended: false }));

/* 
  Access-Control-Allow-Origin:具体域名或*全部 res.setHeader('Access-Control-Allow-Origin','*')
  Access-Control-Allow-Headers:客户端声明 允许9个请求头额外的请求头 否则请求失败 res.setHeader('Access-Control-Allow-Headers','Content-Type,X-Custom-Header')
  Access-Control-Allow-Methods:除get post head 之外的请求方式 res.setHeader('Access-Control-Allow-Methods','*')
*/
/* 
  简单请求,预检请求(GET POST HEAD之外,自定义请求头,application/json格式数据)
*/

// 7.跨域资源共享
const cors = require("cors");
// 挂载cors 解决跨域问题
// !(路由之前)
app.use(cors());

// 4.导入路由
const apiRouter = require("./apiRouter.js");

// 5.挂在路由
app.use("/api", apiRouter);

// 3.启动web服务器
app.listen(80, () => {
  console.log("express server running at http://127.0.0.1");
});
